/*
 *   Copyright (c) 2010-2022, SIUFUNG
 */
package net.siufung.market.base.tenant.controller.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import net.siufung.core.model.AbstractDto;
import net.siufung.core.model.enums.DefaultEnum;
import net.siufung.core.model.enums.InitializeEnum;
import net.siufung.core.utils.CopyUtil;
import net.siufung.core.utils.StringPool;
import net.siufung.market.base.tenant.mapper.entity.Tenant;
import net.siufung.market.base.tenant.mapper.entity.TenantProfile;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * <p>
 * 系统租户表 新增数据传参对象
 * </p>
 * @author 陈建峰
 * @since 2022-07-06 14:45:08
 */
@Slf4j
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="TenantSaveDto", description="系统租户表新增数据传参对象")
public class TenantSaveDto extends AbstractDto {

    private static final long serialVersionUID = 120056575040762715L;

    /**
     * 租户名称
     */
    @ApiModelProperty(value = "租户名称")
    @NotBlank(message = "租户名称不能为空!")
    @Length(max=64, message="租户名称长度不大于64!")
    private String name;

    /**
     * 租户唯一编码
     */
    @ApiModelProperty(value = "租户唯一编码")
    @NotBlank(message = "租户唯一编码不能为空!")
    @Length(max=64, message="租户唯一编码长度不大于64!")
    private String code;

    /**
     * 租户类型
     */
    @ApiModelProperty(value = "租户类型")
    @NotNull(message = "租户类型不能为空!")
    private Integer tenantTypeId;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Length(max=255, message="描述长度不大于255!")
    private String description;

    /**
     * 联系人
     */
    @ApiModelProperty(value = "联系人")
    @Length(max=32, message="联系人长度不大于32!")
    private String contacts;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @Length(max=16, message="联系电话长度不大于16!")
    private String phone;

    /**
     * 电子邮件
     */
    @ApiModelProperty(value = "电子邮件")
    @Length(max=255, message="电子邮件长度不大于255!")
    private String email;

    /**
     * 租户地址
     */
    @ApiModelProperty(value = "租户地址")
    @Length(max=255, message="租户地址长度不大于255!")
    private String address;

    /**
     * 租户扩展属性
     */
    @ApiModelProperty(value = "租户扩展属性")
    private String extra;

    /**
     * Tenant 转化成 TenantSaveDto 数据领域实体
     * @return Tenant
     */
    public Tenant to(){
        Tenant tenant = new Tenant();
        CopyUtil.copyProperties(this, tenant);
        tenant.setAdminAccount(StringPool.DASH);
        tenant.setAdminAccountId(0);
        tenant.setTenantInitState(InitializeEnum.NOT.getValue());
        tenant.setTenantDefaultState(DefaultEnum.NOT.getValue());
        return tenant;
    }

    /**
     * 属性转换成 租户属性
     * @return TenantProfile
     */
    public TenantProfile toProfile(){
        TenantProfile tenantProfile = new TenantProfile();
        CopyUtil.copyProperties(this, tenantProfile);
        return tenantProfile;
    }
}